using System;

namespace VEXREDUS_hil_interface
{
	// Class containing current _known_ state of XPlane
	public class XPlane_State
	{	
		#region Data input/output
		// XPlane Data -- order after input/output messages in XPlane
		// FIXME add description for all variables marked "FIXME"
		
		// 3: speeds
		public float Vind_kias = 0;		// 0: Velocity indicated? FIXME
		public float Vind_keas = 0; 	// 1: FIXME
		public float Vtrue_ktas = 0; 	// 2: Velocity true? FIXME
		public float Vtrue_ktgs = 0; 	// 3: FIXME
										// 4: unused
		public float Vind_mph = 0; 		// 5: [mph] FIXME
		public float Vtrue_mphas = 0; 	// 6: FIXME
		public float Vtrue_mphgs = 0;	// 7: FIXME
		
		// 4: Mach, VVI, G-Load
		public float Mach = 0;			// 0: [ratio]
										// 1: unused
		public float VVI = 0;			// 2: [fpm] FIXME
										// 3: unused
		public float Gload_norml = 0;	// 4: FIXME
		public float Gload_axial = 0;	// 5: FIXME
		public float Gload_side = 0;	// 6: FIXME
										// 7: unused

        // 11: flight con ail/elv/rud
        public float elev = 0;          // 0: Elevators [surf]
        public float ailrn = 0;         // 1: Ailerons [surf]
        public float ruddr = 0;         // 2: Rudders [surf]
                                        // 3: Unused
        public float nwhel = 0;         // 4: [steer] FIXME
                                        // 5: Unused
                                        // 6: Unused
                                        // 7: Unused
		
		// 17: angular velocities
		public float Q = 0;				// 0: Pitch angular velocity [rad/s] 
		public float P = 0; 			// 1: Roll angular velocity [rad/s]
		public float R = 0; 			// 2: Yaw angular velocity [rad/s]
										// 3: unused
										// 4: unused
										// 5: unused
										// 6: unused
										// 7: unused
		
		// 18: pitch, roll, headings
		public float pitch = 0;			// 0: Pitch angle [deg]
		public float roll = 0;			// 1: Roll angle [deg]
		public float hding_true = 0;	// 2: FIXME
		public float hding_mag = 0;		// 3: FIXME
		public float mag = 0;			// 4: [comp] FIXME
										// 5: ununed
										// 6: unused
		public float mavar = 0;			// 7: [deg] FIXME
		
		// 19: AoA, side-slip, paths
		public float alpha = 0;			// 0: [deg] FIXME
		public float beta = 0;			// 1: [deg] FIXME
		public float hpath = 0;			// 2: [deg] FIXME
		public float vpath = 0;			// 3: [deg] FIXME
										// 4: unused
										// 5: unused
										// 6: unused
		public float slip = 0;			// 7: [deg] FIXME
		
		// 20: lat, lon, alt
		public float lat = 0; 			// 0: Latitude [decimal degrees]
		public float lon = 0; 			// 1: Longitude [decimal degrees]
		public float alt_ftmsl = 0; 	// 2: Altitude [ftmsl] FIXME
		public float alt_ftagl = 0; 	// 3: Altitude [ftagl] FIXME
		public float on = 0; 			// 4: FIXME what is this? Logic? 
		public float alt_ind = 0; 		// 5: Altitude [ind] FIXME
		public float lat_south = 0; 	// 6: Latitude, south? FIXME
		public float lon_west = 0; 		// 7: Longitude, west? FIXME
		#endregion
	}
}

